模式是處理某種情境之下的問題的解決方案
深入淺出設計模式, 2nd (p. 565)
Design patterns themselves follow a pattern (a "meta-pattern," if you will). Each pattern has:
Type | Creational Patterns | Structural Patterns | Behavioural Patterns |
---|---|---|---|
Class Patterns | Factory Method | Adapter (Class) | Template Method, Interpreter |
Object Patterns | Singleton, Prototype, Builder, Abstract Factory | Adapter (Object), Bridge, Composite, Decorator, Facade, Flyweight, Proxy | Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Visitor |
註: 這些內容是我翻閱書籍 (Head First Design Patterns 2nd),搭配網路查找相關資料所整理成的筆記。有時間我再翻譯成更順口的中文來解釋 (使用 ChatGPT 翻出來的中文還是稍奇怪了點,故保留原文以免造成誤解)
Powered by ChatGPT-4 :)
雖然這兩者都在軟體設計領域中被廣泛提及,但它們具有不同的定義和目的。以下是它們之間的關聯和差異:
定義
- 設計原則 (Design Principle):這些是幫助指導軟體設計的高層次的指導方針。這些原則提供了一個框架,幫助開發者確保他們的軟體設計是靈活的、模組化的、可擴展的和可維護的
- 設計模式 (Design Patterns):這些是軟體設計中的常見問題的解決方案。它們不是可以直接在程式中使用的代碼,而是設計藍圖,幫助解決一般性的問題
關聯
- 設計模式往往是設計原則的具體實現。也就是說,許多設計模式都是基於一個或多個設計原則來創建的。例如,觀察者模式實現了「依賴倒置原則」
層次和範圍
- 設計原則是更為廣泛和高層次的指導方針,它們適用於各種情況和上下文
- 設計模式則更具體,針對特定的問題和情境
目的
- 設計原則旨在建立一個好的軟體架構基礎,確保軟體設計的健康和持久性
- 設計模式提供特定問題的解決方案,使開發者能夠更容易、更快速地構建軟體
總的來說,設計原則和設計模式都是軟體工程中用來促進優秀設計的工具,但它們在概念上和實際應用上有所不同。了解它們之間的關係可以幫助開發者更好地設計和構建軟體
[1]. https://refactoring.guru/design-patterns/what-is-pattern
[2]. https://www.gofpattern.com/design-patterns/module3/design-pattern-elements.php
[3]. https://ithelp.ithome.com.tw/articles/10250137
[4]. https://ithelp.ithome.com.tw/articles/10235597
[5]. https://ithelp.ithome.com.tw/articles/10235045
[6]. https://www.geeksforgeeks.org/modular-approach-in-programming/
[7]. https://www.geeksforgeeks.org/abstract-data-types/
[8]. https://ithelp.ithome.com.tw/articles/10310209
[9]. https://ithelp.ithome.com.tw/articles/10310208